#ifndef BITMAPDRAW_H
#define BITMAPDRAW_H

#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>

#include <iostream>

/*! \class BitmapDraw
 *  \brief Contains the images of the game objects.
 *
 *   The images are drawn using allegro functions and stored as bitmaps.
 *   The game display, object images and the drawing routines for the images
 *   are the data members of the BitmapDraw class.
 *
 *  \author Jackline Atsango
 *  \author Jean pierre vieira Pereira
 *  \version 3
 *  \date 26 September 2012
 */

using namespace std;

class BitmapDraw
{
    public:

/*! \fn BitmapDraw
 *  \brief create bitmap object to be drawn
 *  \param font18 font of size 18 to be stored
 *  \param font36 font of size 36 to be stored
 *  \param font144 font of size 144 to be stored
 */
        BitmapDraw(ALLEGRO_FONT* font18 = NULL, ALLEGRO_FONT* font36 = NULL, ALLEGRO_FONT* font144 = NULL );

/*! \fn void DrawAllBitmaps
 *  \brief Member function to draw all the bitmap images
 */
        void DrawAllBitmaps();

/*! \fn void reinit_SoilImage
 *  \brief re-draw unexplored soil for the next level and starting tunnels
 */
        void reinit_SoilImage();

/*! \fn ALLEGRO_BITMAP get_MainImage
 *  \returns pointer to mainimage bitmap
 */
        ALLEGRO_BITMAP* get_MainImage();

/*! \fn ALLEGRO_BITMAP get_DigDugImage
 *  \returns pointer to digdugimage bitmap
 */
        ALLEGRO_BITMAP* get_DigDugImage();

/*! \fn ALLEGRO_BITMAP get_SoilImage
 *  \returns pointer to soilimage bitmap
 */
        ALLEGRO_BITMAP* get_SoilImage();

/*! \fn ALLEGRO_BITMAP get_RedMonsterImage
 *  \returns pointer to redmonster bitmap
 */
        ALLEGRO_BITMAP* get_RedMonsterImage();

/*! \fn ALLEGRO_BITMAP get_DisembodiedRedMonsterImage
 *  \returns pointer to disembodiedimage bitmap
 */
        ALLEGRO_BITMAP* get_DisembodiedRedMonsterImage();

/*! \fn ALLEGRO_BITMAP get_ArrowImage
 *  \returns pointer to arrowimage bitmap
 */
        ALLEGRO_BITMAP* get_ArrowImage();

/*! \fn ALLEGRO_BITMAP get_TitleImage
 *  \returns pointer to title screen bitmap
 */
        ALLEGRO_BITMAP* get_TitleImage();

/*! \fn ALLEGRO_BITMAP get_LevelPassImage
 *  \returns pointer to 'level completed' screen bitmap
 */
        ALLEGRO_BITMAP* get_LevelPassImage();

/*! \fn ALLEGRO_BITMAP get_GameOverImage
 *  \returns pointer to 'Game Over' screen bitmap
 */
        ALLEGRO_BITMAP* get_GameOverImage();

/*! \fn virtual ~BitmapDraw
 *  \brief delete bitmaps
 */
        virtual ~BitmapDraw();

    private:

        void DrawMainImage();
        void DrawDigDugBitmap();
        void DrawSoilBitmap();
        void DrawRedMonsterBitmap();
        void DrawDisembodiedRedMonsterBitmap();
        void DrawArrowBitmap();
        void DrawTitleBitmap();
        void DrawLevelPassBitmap();
        void DrawGameOver();

        ALLEGRO_DISPLAY *_display;

        ALLEGRO_BITMAP *_MainImage;
        ALLEGRO_BITMAP *_DigDugImage;
        ALLEGRO_BITMAP *_SoilImage;
        ALLEGRO_BITMAP *_RedMonsterImage;
        ALLEGRO_BITMAP *_DisembodiedRedMonster;
        ALLEGRO_BITMAP *_ArrowImage;
        ALLEGRO_BITMAP *_TitleImage;
        ALLEGRO_BITMAP *_LevelPassImage;
        ALLEGRO_BITMAP *_GameOverImage;

        ALLEGRO_FONT *_font18;
        ALLEGRO_FONT *_font36;
        ALLEGRO_FONT *_font144;

};

#endif // BITMAPDRAW_H
